﻿using System;
using System.Collections.Generic;
using System.Text;
using AbcCorp.DTO;
using AbcCorp.DAO;

namespace AbcCorp.BLO
{
    public class ProductBlo
    {

        /// <summary>
        /// Thêm sản phẩm
        /// </summary>
        /// <param name="newProduct">Sản phẩm mới muốn thêm</param>
        public bool AddProduct(ProductDto newProduct)
        {
            if (string.IsNullOrEmpty(newProduct.ProductImage) || string.IsNullOrEmpty(newProduct.ProductName) ||
                string.IsNullOrEmpty(newProduct.Origin) || newProduct.Discount < 0 || newProduct.Price < 0)
            {
                return false;
            }
            var productDao = new ProductDao();
            return productDao.AddProduct(newProduct);
        }

        /// <summary>
        /// Cập nhập thông tin sản phẩm
        /// </summary>
        /// <param name="newInfo">Thông tin mới</param>
        /// <param name="id">Mã sản phẩm</param>
        public bool UpdateProduct(ProductDto newInfo, int id)
        {
            var productDao = new ProductDao();
            return productDao.UpdateProduct(newInfo, id);
        }

        /// <summary>
        /// Xóa sản phẩm
        /// </summary>
        /// <param name="prodid">Mã sản phẩm</param>
        public bool DeleteProduct(int prodid)
        {
            if (prodid <= 0) return false;
            var productDao = new ProductDao();
            return productDao.DeleteProduct(prodid);
        }

        
        /// <summary>
        /// Lấy ra danh sách tất cả các sản phẩm
        /// </summary>
        /// <returns>List ProductDto</returns>
        public IList<ProductDto> GetProducts()
        {
            var productDao = new ProductDao();
            return productDao.GetProducts();
        }

         /// <summary>
        /// Lấy thông tin sản phẩm bằng mã sản phẩm
        /// </summary>
        /// <param name="productid">Mã sản phẩm</param>
        /// <returns>ProductDto</returns>
        public ProductDto GetProduct(int productid)
         {
             if (productid <= 0) return null;
                
             var productDao = new ProductDao();
             return productDao.GetProduct(productid);
         }
            
           /// <summary>
        /// Lấy sản phẩm bằng mã danh mục
        /// </summary>
        /// <param name="catid">Mã danh mục</param>
        public IList<ProductDto> GetProductByCategory(int catid)
           {
               if (catid <= 0) return null;
               var productDao = new ProductDao();
               return productDao.GetProductByCategory(catid);
           }

          /// <summary>
        /// Tim kiem san pham
        /// </summary>
        /// <param name="keySearch">Tu khoa tim kiem</param>
        /// <param name="catid">Danh muc tim kiem</param>
        /// <returns>Danh sach san pham</returns>
        public IList<ProductDto> FindProduct(string keySearch, int catid)
          {
              if (catid <= 0 || string.IsNullOrEmpty(keySearch))
              {
                  return null;
              }
              var productDao = new ProductDao();
              return productDao.FindProduct(keySearch, catid);
          }
    }
}
